跳到主要内容

TypeScript 单例模板基类

就像写 C# 的单例模板那样,TS 也可以写一个单例模板

class Singleton{
static getInstance<T extends {}>(this: new () => T): T {
if(!(<any>this).instance){
(<any>this).instance = new this();
}
return (<any>this).instance;
}
}

// 使用例
class Bar extends Singleton {
desc: string;
public print(){
Log.log(this.desc);
}
}

Bar.getInstance().desc = "single";
Bar.getInstance().print();
Bar.getInstance().print();